package com.xoa.controller.trainingPlan;

import com.xoa.model.trainingPlan.EduTrainingPlan;
import com.xoa.service.trainingPlan.IEduTrainingPlanService;
import com.xoa.util.AjaxJson;
import com.xoa.util.ToJson;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 创建作者:   高亚峰
 * 创建日期:   2017/9/11 9:57
 * 类介绍  :   培训后台接口
 * 构造参数:
 */
@Controller
@RequestMapping("/eduTrainPlan")
public class EduTrainingPlanController {

    @Resource
    private IEduTrainingPlanService eduTrainingPlanService;

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/11 14:46
     * 类介绍  :   获取培训列表详情接口
     * 构造参数:
     */
    @RequestMapping("/getHrtailDetail")
    @ResponseBody
    public ToJson<EduTrainingPlan> getHrtailDetail(Integer planId){
        return eduTrainingPlanService.getHrtailDetail(planId);
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/11 14:46
     * 类介绍  :   获取所有培训列表
     * 构造参数:
     */
    @RequestMapping("/getAllTrain")
    @ResponseBody
    public AjaxJson getAllTrain(HttpServletRequest request,Integer page,Integer pageSize,boolean useFlag){
        return eduTrainingPlanService.getAll(request,page,pageSize,useFlag);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/11 14:46
     * 类介绍  :   编辑培训信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/editTrain")
    public AjaxJson editTrain(EduTrainingPlan eduTrainingPlan){
      return eduTrainingPlanService.editTrain(eduTrainingPlan);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/11 15:46
     * 类介绍  :   批量删除培训信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/deleteTrainObjects")
    public AjaxJson deleteTrainObjects(String []planIds){
        return eduTrainingPlanService.deleteTrainObjects(planIds);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/11 15:46
     * 类介绍  :   单个删除培训信息
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/deleteTrainById")
    public AjaxJson deleteTrainById(String planId){
        return eduTrainingPlanService.deleteTrainById(planId);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/11 15:46
     * 类介绍  :   新建培训计划
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/addTrain")
    public AjaxJson addTrain(HttpServletRequest request, EduTrainingPlan eduTrainingPlan, @RequestParam(value = "remind", required = false,defaultValue ="1") String remind){
        return eduTrainingPlanService.addTrain(request,eduTrainingPlan,remind);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/11 16:46
     * 类介绍  :   培训计划查询
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/queryTrain")
    public AjaxJson queryTrain(Integer page,Integer pageSize,boolean useFlag,EduTrainingPlan eduTrainingPlan){
        return eduTrainingPlanService.queryTrain(page,pageSize,useFlag,eduTrainingPlan);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 10:46
     * 类介绍  :   培训计划主界面映射
     * 构造参数:
     */
    @RequestMapping("/goIndex")
    public String goIndex(){
        return "app/train/eduTrainPlan/index";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 10:46
     * 类介绍  :   培训计划管理界面映射
     * 构造参数:
     */
    @RequestMapping("/goManage")
    public String goManage(){
        return "app/train/eduTrainPlan/mange";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 10:46
     * 类介绍  :   新建培训计划界面映射
     * 构造参数:
     */
    @RequestMapping("/goNew")
    public String goNew(){
        return "app/train/eduTrainPlan/trainPlanNew";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 10:46
     * 类介绍  :   培训计划查询界面映射
     * 构造参数:
     */
    @RequestMapping("/goQuery")
    public String goQuery(){
        return "app/train/eduTrainPlan/trainPlanQuery";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 17:46
     * 类介绍  :   培训计划审批主界面映射
     * 构造参数:
     */
    @RequestMapping("/assessIndex")
    public String assessIndex(){
        return "app/train/eduTrainPlan/assessIndex";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 17:46
     * 类介绍  :   培训计划审批主界面映射
     * 构造参数:
     */
    @RequestMapping("/assessManage")
    public String assessManage(){
        return "app/train/eduTrainPlan/assessMange";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 17:46
     * 类介绍  :   培训计划审批已准界面映射
     * 构造参数:
     */
    @RequestMapping("/approvalTrue")
    public String ApprovalTrue(){
        return "app/train/eduTrainPlan/approvalTrue";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 17:46
     * 类介绍  :   培训计划审批已准界面映射
     * 构造参数:
     */
    @RequestMapping("/approvalFalse")
    public String ApprovalFlase(){
        return "app/train/eduTrainPlan/approvalFalse";
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 17:46
     * 类介绍  :   培训计划查阅
     * 构造参数:
     */
    @RequestMapping("/approvalQuery")
    public String approvalQuery(){
        return "app/train/eduTrainPlan/approvalQuery";
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 20:00
     * 类介绍  :   列表待审批
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getEduTrainByStatus")
    public AjaxJson getEduTrainByStatus(HttpServletRequest request,String assessingStatus){
        return eduTrainingPlanService.getEduTrainByStatus(request,assessingStatus);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 20:00
     * 类介绍  :   查询培训计划状态（已准记录和为未准记录）
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getMinePlanByStatus")
    public AjaxJson getMinePlanByStatus(HttpServletRequest request,String assessingStatus){
        return eduTrainingPlanService.getMinePlanByStatus(request,assessingStatus);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/12 20:00
     * 类介绍  :   批准计划（不批准计划）
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/editEduTrainByStatus")
    public AjaxJson editEduTrainByStatus(EduTrainingPlan eduTrainingPlan){
        return eduTrainingPlanService.editEduTrainByStatus(eduTrainingPlan);
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/14 15:00
     * 类介绍  :  查询页面接口
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/QueryPlan")
    public AjaxJson QueryPlan(EduTrainingPlan eduTrainingPlan,String startTime,String endTime){
        return eduTrainingPlanService.QueryPlan(eduTrainingPlan,startTime,endTime);
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/14 15:00
     * 类介绍  :   计划审批查询页面接口
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/QueryPlanStatus")
    public AjaxJson QueryPlanStatus(EduTrainingPlan eduTrainingPlan,String startTime,String endTime,HttpServletRequest request){
        return eduTrainingPlanService.QueryPlanStatus(eduTrainingPlan,startTime,endTime,request);
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/14 19:00
     * 类介绍  :   获取所有计划数据
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getAllPlan")
    public AjaxJson getAllPlan(){
        return eduTrainingPlanService.getAllPlan();
    }

    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/14 19:00
     * 类介绍  :   获取所有已批准计划数据
     * 构造参数:
     */
    @ResponseBody
    @RequestMapping("/getAllPlanTrue")
    public AjaxJson getAllPlanTrue(){
        return eduTrainingPlanService.getAllPlanTrue();
    }
    /**
     * 创建作者:   高亚峰
     * 创建日期:   2017/9/14 15:00
     * 类介绍  :   详情映射地址
     * 构造参数:
     */
    @RequestMapping("/goDetail")
    public String goDetail(String planId){
        return "app/train/eduTrainPlan/trainPlanDetail";
    }

    @InitBinder
    public void initBinder(WebDataBinder binder) {
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
        dateFormat.setLenient(false);
        binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
    }
    }
